package main

import (
	"fmt"
	"time"
)

// goroutine 是 Go语言中的轻量级线程实现，由 Go 运行时（runtime）管理。
// Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。
// Go 程序从 main 包的 main() 函数开始，在程序启动时，Go 程序就会为 main() 函数创建一个默认的 goroutine。
func foo() {
	for i := 1; i <= 10; i++ {
		time.Sleep(time.Second * 2)
		fmt.Printf("foo:%v\n", i)
	}
}

func bar() {
	for i := 1; i <= 10; i++ {
		time.Sleep(time.Second)
		fmt.Printf("bar:%v\n", i)
	}
}

func main() {
	// foo 创建协程执行，会随着 main() 结束而结束
	go foo()
	bar()
}
